public class Hipotese {

	private Informacao arma;
	private Informacao suspeito;
	private Informacao pais;
	private boolean foiRefutada;
	private Informacao evidenciaDaRefutacao;

	public Hipotese() {
	}

	public Hipotese(Informacao arma, Informacao suspeito, Informacao pais) {
		this.arma = arma;
		this.suspeito = suspeito;
		this.pais = pais;
	}

	public void incluirArma(Informacao arma) {
		this.arma = arma;
	}

	public void incluirSuspeito(Informacao suspeito) {
		this.suspeito = suspeito;
	}

	public void incluirPais(Informacao pais) {
		this.pais = pais;
	}

	public String mostrarArma() {
		return arma.retornaValor();
	}

	public String mostrarSuspeito() {
		return suspeito.retornaValor();
	}

	public String mostrarPais() {
		return pais.retornaValor();
	}

	public void aplicarRefutacao(Informacao evidencia) {
		foiRefutada = false;

		if ( evidencia != null && arma.equals(evidencia)) {
			evidenciaDaRefutacao = evidencia;
			foiRefutada = true;
		}

		if (evidencia != null && pais.equals(evidencia)) {
			evidenciaDaRefutacao = evidencia;
			foiRefutada = true;
		}

		if ( evidencia != null && suspeito.equals(evidencia)) {
			evidenciaDaRefutacao = evidencia;
			foiRefutada = true;
		}
	}

	public boolean hipoteseRefutada() {
		return foiRefutada;
	}
	
	public Informacao evidenciaDaRefutacao() {
		return evidenciaDaRefutacao;
	}

	public boolean possuiComponente(Informacao info) {
		if (arma.equals(info)) {
			return true;
		}

		if (pais.equals(info)) {
			return true;
		}

		if (suspeito.equals(info)) {
			return true;
		}
		return false;
	}
}
